package beans;

import java.util.List;

import javax.faces.context.FacesContext;

import clases.Central;
import clases.InstitucionBenefica;
import clases.OperadorDeCentral;
import clases.OperadorDeUnidad;
import clases.Persona;
import clases.Socio;
import clases.SocioVirtual;
import clases.Unidad;
import clases.Usuario;

import servicios.ServicioPerfil;
import servicios.ServicioUsuario;

public class UsuarioBean {

	private Socio socio = new Socio();
	private List<Socio> socios;

	private SocioVirtual socioVirtual = new SocioVirtual();
	private List<SocioVirtual> sociosVirtuales;

	private List<Persona> personas;
	private List<Usuario> usuarios;
	private List<InstitucionBenefica> instituciones;
	private InstitucionBenefica institucion = new InstitucionBenefica();
	private Persona persona = new Persona();
	private Long usuarioId;

	public Persona getPersona() {
		return persona;
	}

	public void setPersona(Persona persona) {
		this.persona = persona;
	}

	
	public Long getUsuarioId() {
		return usuarioId;
	}

	public void setUsuarioId(Long usuarioId) {
		this.usuarioId = usuarioId;
	}

	public String eliminar() {
		ServicioUsuario servicio = new ServicioUsuario();
		servicio.eliminar(usuarioId);
		return null;
	}

	public List<Usuario> getListaUsuarios() {
		ServicioUsuario servicio = new ServicioUsuario();
		usuarios = servicio.getListaPersonas();
		return usuarios;
	}

	public List<Persona> getPersonas() {
		return personas;
	}

	public void setPersonas(List<Persona> personas) {
		this.personas = personas;
	}

	public List<Usuario> getUsuarios() {
		return usuarios;
	}

	public void setUsuarios(List<Usuario> usuarios) {
		this.usuarios = usuarios;
	}

	public String verPersona() {
		ServicioUsuario servicio = new ServicioUsuario();
		persona = (Persona) servicio.verUsuario(usuarioId);
		return "ver";
	}

	public String guardarPersona() {
		ServicioUsuario servicio = new ServicioUsuario();
		servicio.guardarPersona(persona);
		return "exito";
	}

	public String modificarPersona() {
		ServicioUsuario servicio = new ServicioUsuario();
		persona = (Persona) servicio.verUsuario(usuarioId);
		return ("edit");
	}

	// Instituciones
	
	public InstitucionBenefica getInstitucion() {
		return institucion;
	}

	public List<InstitucionBenefica> getListaInstituciones() {
		ServicioUsuario servicio = new ServicioUsuario();
		instituciones = servicio.getListaInstituciones();
		return instituciones;
	}

	public void setInstituciones(List<InstitucionBenefica> instituciones) {
		this.instituciones = instituciones;
	}

	public String guardarCambiosEntidad(){
		ServicioUsuario servicio = new ServicioUsuario();
		servicio.guardarCambiosEntidad(institucion);
		return "exito";
	}
	
	public String entidadModificar() {
		ServicioUsuario servicio = new ServicioUsuario();
		institucion = (InstitucionBenefica) servicio.verUsuario(usuarioId);
		return ("modifI");
	}
	
	public String registrarInstitucion() {
		ServicioUsuario servicio = new ServicioUsuario();
		servicio.registrarInstitucion(institucion);
		return "exito";
	}

	// Operadores de Central

	public String registrarOperadorCentral() {
		ServicioUsuario servicio = new ServicioUsuario();
		OperadorDeCentral perfil = new OperadorDeCentral();
		perfil.setUnidad((Unidad) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("unidad"));
		perfil.setUsuario(persona);
		servicio.registrarPersona(persona);
		persona = new Persona();
		return "exito";
	}

	public List<OperadorDeCentral> getListaOperadoresCentral() {
		ServicioPerfil servicio = new ServicioPerfil();
		return servicio.getListaOperadoresCentral();
	}

	// Operadores de Unidad

	public String registrarOperadorUnidad() {
		ServicioUsuario servicio = new ServicioUsuario();
		OperadorDeUnidad perfil = new OperadorDeUnidad();
		perfil.setUnidad((Unidad) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("unidad"));
		perfil.setUsuario(persona);
		servicio.registrarPersona(persona);
		persona = new Persona();
		return "exito";
	}

	public List<OperadorDeUnidad> getListaOperadoresUnidad() {
		ServicioPerfil servicio = new ServicioPerfil();
		Unidad unidad = (Unidad) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("unidad");
		return servicio.getListaOperadoresUnidad(unidad.getId());
	}

	// Socios

	public Socio getSocio() {
		return socio;
	}

	public void setSocio(Socio socio) {
		this.socio = socio;
	}

	public List<Socio> getListaSocios() {
		ServicioPerfil servicio = new ServicioPerfil();
		Unidad unidad = (Unidad) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("unidad");
		socios = servicio.getListaSocios(unidad.getId());
		return socios;
	}
	
	public void setSocios(List<Socio> socios) {
		this.socios = socios;
	}

	public String registrarSocio() {
		ServicioUsuario servicio = new ServicioUsuario();
		socio.setUnidad((Unidad) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("unidad"));
		socio.setUsuario(persona);
		servicio.registrarPersona(persona);
		persona = new Persona();
		socio = new Socio();
		return null;
	}
	
	//Socios Virtuales
	
	public SocioVirtual getSocioVirtual() {
		return socioVirtual;
	}

	public void setSocioVirtual(SocioVirtual socioVirtual) {
		this.socioVirtual = socioVirtual;
	}

	public List<SocioVirtual> getListaSociosVirtuales() {
		ServicioPerfil servicio = new ServicioPerfil();
		sociosVirtuales = servicio.getListaSociosVirtuales();
		return sociosVirtuales;
	}

	public void setSociosVirtuales(List<SocioVirtual> sociosVirtuales) {
		this.sociosVirtuales = sociosVirtuales;
	}
	
	public String registrarSocioVirtual() {
		ServicioUsuario servicio = new ServicioUsuario();
		socioVirtual.setUnidad((Central) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("unidad"));
		socioVirtual.setUsuario(persona);
		servicio.registrarPersona(persona);
		persona = new Persona();
		socioVirtual = new SocioVirtual();
		return null;
	}
	
	
	//Modificador de informacion personal
	
	
	

}
